Skip to content

PENDING: dt-bindings: input: i2c-hid: Introduce FocalTech FT3d81#1273

Open
pradyot7 wants to merge 9 commits into
qualcomm-linux:tech/bus/peripheralsfrom
pradyot7:glymur-touchscreen-binding
Open

PENDING: dt-bindings: input: i2c-hid: Introduce FocalTech FT3d81#1273
pradyot7 wants to merge 9 commits into
qualcomm-linux:tech/bus/peripheralsfrom
pradyot7:glymur-touchscreen-binding

Conversation

@pradyot7

Copy link
Copy Markdown

Create new binding file for the FocalTech ft3d81 due to new touchscreen chip. Its driver specification similar to FT8112.
Dt changes raised with PR
#1253

vdadhani and others added 9 commits May 5, 2026 14:39
Add the "qcom,qcs615-qspi" compatible string to the Qualcomm QSPI device-
tree binding to enable QCS615-based platforms to use the existing QSPI
controller binding.

Link: https://patch.msgid.link/20260324-spi-nor-v1-1-3efe59c1c119@oss.qualcomm.com
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
The QSPI controller has two interconnect paths:
1. qspi-config: CPU to QSPI controller for register access
2. qspi-memory: QSPI controller to memory for DMA operations

Currently, the driver only manages the qspi-config path. Add support for
the qspi-memory path to ensure proper bandwidth allocation for QSPI data
transfers to/from memory. Enable and disable both paths during runtime PM
transitions.

Link: https://patch.msgid.link/20260324-spi-nor-v1-2-3efe59c1c119@oss.qualcomm.com
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
…oller support

Document a DeviceTree property to describe QUP-based I2C controllers that
are shared with one or more other system processors.

On some Qualcomm platforms, a QUP-based I2C controller may be accessed by
multiple system processors (for example, APPS and DSP). In such
configurations, the operating system must not assume exclusive ownership
of the controller or its associated hardware resources.

The new qcom,qup-multi-owner property indicates that the controller is
externally shared and that the operating system must avoid operations
which rely on sole control of the hardware.

Link: https://lore.kernel.org/all/20260331114742.2896317-2-mukesh.savaliya@oss.qualcomm.com/
Signed-off-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
…I2C transfers

Some platforms use a QUP-based I2C controller in a configuration where the
controller is shared with another system processor (described in DT using
qcom,qup-multi-owner). In such setups, GPI hardware lock/unlock TREs can be
used to serialize access to the controller.

Add support to emit lock and unlock TREs around I2C transfers and increase
the maximum TRE count to account for the additional elements.

Also simplify the client interface by replacing multiple boolean fields
(shared flag and message position tracking) with a single lock_action
selector (acquire/release/none), as the GPI driver only needs to know
whether to emit lock/unlock TREs for a given transfer.

Link: https://lore.kernel.org/all/20260331114742.2896317-3-mukesh.savaliya@oss.qualcomm.com/
Signed-off-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
…trollers

On platforms where a GENI Serial Engine is shared with another system
processor, selecting the "sleep" pinctrl state can disrupt ongoing
transfers initiated by the other processor.

Teach geni_se_resources_off() to skip selecting the pinctrl sleep state
when the Serial Engine is marked as shared, while still allowing the
rest of the resource shutdown sequence to proceed.

This is required for multi-owner configurations (described via DeviceTree
with qcom,qup-multi-owner on the protocol controller node).

Link: https://lore.kernel.org/all/20260331114742.2896317-4-mukesh.savaliya@oss.qualcomm.com/
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
Some platforms use a QUP-based I2C controller in a configuration where the
controller is shared with another system processor. In this setup the
operating system must not assume exclusive ownership of the controller or
its associated pins.

Add support for enabling multi-owner operation when DeviceTree specifies
qcom,qup-multi-owner. When enabled, mark the underlying serial engine as
shared so the common GENI resource handling avoids selecting the "sleep"
pinctrl state, which could disrupt transfers initiated by the other
processor.

For GPI mode transfers, request lock/unlock TRE sequencing from the GPI
driver by setting a single lock_action selector per message, emitting lock
before the first message and unlock after the last message (handling the
single-message case as well). This serializes access to the shared
controller without requiring message-position flags to be passed into the
DMA engine layer.

Link: https://lore.kernel.org/all/20260331114742.2896317-5-mukesh.savaliya@oss.qualcomm.com/
Signed-off-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
When other drivers attempt I2C transfers during early resume phase, the
I2C controller is still runtime suspended, causing pm_runtime_get_sync()
to fail with -EACCES (-13):

  [  101.914202] geni_i2c 980000.i2c: error turning SE resources:-13

The PM runtime core returns -EACCES when runtime PM is disabled
(dev->power.disable_depth > 0). This occurs because:

1. During suspend_noirq, I2C driver calls geni_i2c_runtime_suspend()
   and then pm_runtime_disable()
2. I2C driver's noirq_resume only marks adapter as resumed but doesn't
   re-enable runtime PM or power up the hardware
3. Other drivers resuming later attempt I2C transfers
4. pm_runtime_get_sync() returns -EACCES because runtime PM is still
   disabled

Fix this by calling pm_runtime_force_resume() in geni_i2c_resume_noirq()
to properly resume the hardware and re-enable runtime PM during the noirq
phase. This ensures the I2C controller is powered and ready for use when
other drivers need it during resume.

Upstream-Status: Pending
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
Signed-off-by: Mukesh Kumar Savaliya <mukesh.savaliya@oss.qualcomm.com>
…DMA completion IRQ

When uart_flush_buffer() runs before the DMA completion IRQ is delivered,
the following race can occur (all steps serialized by uart_port_lock):

  1. DMA starts: tx_remaining = N, kfifo contains N bytes
  2. DMA completes in hardware; IRQ is pending but not yet delivered
  3. uart_flush_buffer() acquires the port lock and calls kfifo_reset(),
     making kfifo_len() = 0 while tx_remaining remains N
  4. uart_flush_buffer() releases the port lock
  5. DMA IRQ fires; handle_tx_dma() acquires the port lock and calls
     uart_xmit_advance(uport, tx_remaining) on an empty kfifo

uart_xmit_advance() increments kfifo->out by tx_remaining. Since
kfifo_reset() already set both in and out to 0, out wraps past in,
causing kfifo_len() to return UART_XMIT_SIZE - tx_remaining. The next
start_tx_dma() call then submits a DMA transfer of stale buffer data.

Fix this by snapshotting kfifo_len() at the start of handle_tx_dma()
and skipping uart_xmit_advance() when fifo_len < tx_remaining, which
indicates the kfifo was reset by a preceding flush.

Link: https://patch.msgid.link/20260506-serial-dma-stale-tx-buf-v1-1-e3ccb360d719@oss.qualcomm.com
Fixes: 2aaa43c ("tty: serial: qcom-geni-serial: add support for serial engine DMA")
Cc: stable@vger.kernel.org
Signed-off-by: Viken Dadhaniya <viken.dadhaniya@oss.qualcomm.com>
Create new binding file for the FocalTech ft3d81 due to
new touchscreen chip. Its driver specification similar to FT8112.

Signed-off-by: Pradyot Kumar Nayak <pradyot.nayak@oss.qualcomm.com>
@qcomlnxci qcomlnxci requested review from a team, mukesh-savaliya and vdadhani and removed request for a team May 29, 2026 09:36
@qlijarvis

Copy link
Copy Markdown

PR #1273 — validate-patch

PR: #1273

Verdict Issues Detailed Report
N/A 0 Full report

Final Summary

  1. Lore link present: No — PENDING: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — work-in-progress, not posted upstream
  4. PR present in qcom-next: Not checked — PENDING: vendor work-in-progress commit
Verdict: N/A — click to expand

🔍 Patch Validation

PR: #1273 - PENDING: dt-bindings: input: i2c-hid: Introduce FocalTech FT3d81
Upstream commit: N/A
Verdict: ⏭️ SKIP (PENDING prefix — no upstream validation applicable)

Commit Message

Check Status Note
Subject matches upstream N/A PENDING: prefix — not posted upstream
Body preserves rationale N/A No upstream source to compare
Fixes tag present/correct N/A Not a fix; new binding addition
Authorship preserved N/A Original work by PR author
Backport note (if applicable) N/A Not a backport

Diff

File Status Notes
Documentation/devicetree/bindings/input/focaltech,ft8112.yaml ⏭️ PENDING: work-in-progress; adds focaltech,ft3d81 compatible

Issues

None — this is a PENDING: commit, which by design has no upstream lore link and is not subject to upstream validation.

Verdict

This commit uses the PENDING: prefix, indicating work-in-progress that has not been posted to upstream mailing lists. No lore.kernel.org link is expected or required. The validate-patch skill is not applicable to PENDING: commits. The change itself adds a new compatible string (focaltech,ft3d81) to an existing FocalTech touchscreen binding, following the pattern of the existing focaltech,ft8112 entry.

Final Summary

  1. Lore link present: No — PENDING: prefix; no lore link expected or required
  2. Lore link matches PR commits: N/A — no lore link to compare against
  3. Upstream patch status: N/A — work-in-progress, not posted upstream
  4. PR present in qcom-next: Not checked — PENDING: vendor work-in-progress commit

@qlijarvis

Copy link
Copy Markdown

PR #1273 — checker-log-analyzer

PR: #1273
Checker run: https://github.com/qualcomm-linux/kernel-config/actions/runs/26629839851

Checker Result Summary
Checker Result Summary
checkpatch No style issues
dt-binding-check Schema validation passed
dtb-check ⏭️ No DTS changes
sparse-check ⏭️ No C/H changes
check-uapi-headers ⏭️ No relevant changes
check-patch-compliance Invalid prefix: PENDING: not allowed
tag-check PENDING: not valid for topic branches

Detailed report: Full report

Checker analysis — click to expand

🤖 CI Checker Analysis (checker-log-analyzer)

PR: #1273 - PENDING: dt-bindings: input: i2c-hid: Introduce FocalTech FT3d81
Source: https://github.com/qualcomm-linux/kernel-config/actions/runs/26629839851

Checker Result Summary
checkpatch No style issues
dt-binding-check Schema validation passed
dtb-check ⏭️ No DTS changes
sparse-check ⏭️ No C/H changes
check-uapi-headers ⏭️ No relevant changes
check-patch-compliance Invalid prefix: PENDING: not allowed
tag-check PENDING: not valid for topic branches

❌ check-patch-compliance

Root cause: Commit uses PENDING: prefix, which is not in the allowed list (FROMLIST:, FROMGIT:, UPSTREAM:, BACKPORT:).

Failure details:

Checking commit: PENDING: dt-bindings: input: i2c-hid: Introduce FocalTech FT3d81
Commit summary does not start with a required prefix

Analysis:
The check-patch-compliance checker enforces a strict subset of prefixes and does not accept PENDING:, QCLINUX:, or WORKAROUND:. This is a known limitation of the checker — it only accepts prefixes that link to upstream sources.

Fix:
If this patch has been posted to a mailing list (lore.kernel.org):

git rebase -i <base_sha>   # mark commit as 'edit'
git commit --amend -m "FROMLIST: dt-bindings: input: i2c-hid: Introduce FocalTech FT3d81"
# Add Link: https://lore.kernel.org/... to commit body
git rebase --continue

If this is vendor-only work not yet posted upstream, the checker will always fail. Consider posting to the upstream mailing list first, then use FROMLIST: + Link: tag.

Reproduce locally:

cd /path/to/kernel
../kernel-checkers/check-patch-compliance.sh --kernel-src . --base <base_sha> --head <head_sha>

❌ tag-check

Root cause: Target branch is topic/tech/bus/peripherals (not qcom-next or qcom-next-staging), which requires all commits to have a valid subject prefix. PENDING: is not a valid prefix.

Failure details:

Commit 2622295a2b13 ("PENDING: dt-bindings: input: i2c-hid: Introduce FocalTech FT3d81")
Subject line does not start with a required prefix.

Analysis:
All branches except qcom-next and qcom-next-staging require every commit subject to start with one of:

  • FROMLIST: — Posted to mailing list (lore.kernel.org)
  • FROMGIT: — Taken from a maintainer git tree
  • UPSTREAM: — Merged into Linus's mainline tree
  • BACKPORT: — Upstream patch backported with modifications
  • QCLINUX: — Vendor-only change with no upstream equivalent
  • PENDING:Not valid for topic branches
  • WORKAROUND: — Temporary fix not suitable for upstream

The PENDING: prefix indicates work-in-progress that hasn't been posted upstream. For topic branches, you must use a prefix that indicates the patch's upstream status.

Fix:
Choose the appropriate prefix based on the patch's actual status:

If posted to lore.kernel.org:

git rebase -i <base_sha>   # mark commit as 'edit'
git commit --amend -m "FROMLIST: dt-bindings: input: i2c-hid: Introduce FocalTech FT3d81"
# Add to commit body:
# Link: https://lore.kernel.org/...
git rebase --continue

If vendor-only (no upstream equivalent):

git commit --amend -m "QCLINUX: dt-bindings: input: i2c-hid: Introduce FocalTech FT3d81"

Note: QCLINUX: will still fail check-patch-compliance (known limitation), but satisfies the tag-check requirement.

If not yet posted but should be:
Post the patch to the appropriate upstream mailing list first, then use FROMLIST: + Link: tag.


Verdict

2 blockers must be fixed before merge:

  1. Change prefix from PENDING: to a valid prefix (FROMLIST:, FROMGIT:, UPSTREAM:, BACKPORT:, or QCLINUX:)
  2. If using FROMLIST:: Add Link: <lore-url> to the commit body

Recommended action:
If this binding addition is intended for upstream submission, post it to the linux-input mailing list first, then update the commit to use FROMLIST: prefix with the lore link. If it's vendor-only, use QCLINUX: prefix (note: this will still fail check-patch-compliance, which is a known checker limitation for vendor-only commits).

@jseerapu jseerapu force-pushed the tech/bus/peripherals branch from 342d00a to feb0c22 Compare June 18, 2026 07:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants